/**
 */
package BlipTGG.Rules;

import BlipLanguage.BlipApplication;
import BlipLanguage.BlipLanguageFactory;
import BlipLanguage.BlipModel;
import BlipLanguage.BlipModelAttribute;

import BlipTGG.BlipTGGFactory;
import BlipTGG.MApplicationToApplication;
import BlipTGG.MModelAttributeToModelAttribute;
import BlipTGG.MModelToModel;

import MocaTree.Attribute;
import MocaTree.MocaTreeFactory;
import MocaTree.Node;

import TGGLanguage.csp.*;

import TGGRuntime.AbstractRule;
import TGGRuntime.Edge;
import TGGRuntime.IsApplicableMatch;
import TGGRuntime.IsApplicableRuleResult;
import TGGRuntime.IsAppropriateRuleResult;
import TGGRuntime.Match;
import TGGRuntime.PerformRuleResult;
import TGGRuntime.TGGRuntimeFactory;

import csp.constraints.*;

import de.upb.tools.sdm.*;

import java.util.*;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>MApplication To Application Rule</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see BlipTGG.Rules.RulesPackage#getMApplicationToApplicationRule()
 * @model
 * @generated
 */
public interface MApplicationToApplicationRule extends EObject, AbstractRule {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect translated elements\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.1\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0 //@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.2 //@ownedActivityNode.0/@storyPattern/@linkVariable.3 //@ownedActivityNode.0/@storyPattern/@linkVariable.4 //@ownedActivityNode.0/@storyPattern/@linkVariable.5 //@ownedActivityNode.0/@storyPattern/@linkVariable.6\" bindingOperator=\"CREATE\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.5\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MApplicationToApplication\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"application\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdLinkElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"perform transformation\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;applicationNode&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;titleAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;packageNameAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;androidPlayLibraryPathAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;androidMapsApiKeyAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mApplicationToApplication\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MApplicationToApplication\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"application\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication/title\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;application&quot;,&quot;title&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication/packageName\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;application&quot;,&quot;packageName&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication/androidPlayLibraryPath\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;application&quot;,&quot;androidPlayLibraryPath&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication/androidMapsApiKey\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;application&quot;,&quot;androidMapsApiKey&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"csp\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingSemantics=\"OPTIONAL\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGLanguage#//csp/CSP\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;this&quot;)\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable name=\"attributeInfo\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.9\"/>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED00057400147469746C65417474722E67657456616C75652829\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001A7061636B6167654E616D65417474722E67657456616C75652829\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED0005740025616E64726F6964506C61794C69627261727950617468417474722E67657456616C75652829\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED0005740020616E64726F69644D6170734170694B6579417474722E67657456616C75652829\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n        <forward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <simultaneous variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <backward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <source/>\r\n        <target/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"perform postprocessing\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// No post processing method found\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"bookkeeping for edges\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0 //@ownedActivityNode.5/@storyPattern/@linkVariable.3 //@ownedActivityNode.5/@storyPattern/@linkVariable.6 //@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.13 //@ownedActivityNode.5/@storyPattern/@linkVariable.16\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.8 //@ownedActivityNode.5/@storyPattern/@linkVariable.11 //@ownedActivityNode.5/@storyPattern/@linkVariable.12\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.7\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.10\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.14 //@ownedActivityNode.5/@storyPattern/@linkVariable.17\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"application\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.15\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__titleAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__packageNameAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.4\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.6\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.8 //@ownedActivityNode.5/@storyPattern/@linkVariable.7\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.11 //@ownedActivityNode.5/@storyPattern/@linkVariable.10\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication__source__applicationNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.13\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.12 //@ownedActivityNode.5/@storyPattern/@linkVariable.14\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;source&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication__target__application\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.16\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.15 //@ownedActivityNode.5/@storyPattern/@linkVariable.17\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;target&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.2\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Node applicationNode = null;\n      Attribute packageNameAttr = null;\n      Attribute titleAttr = null;\n      Iterator fujaba__IterIsApplicableMatchToCsp = null;\n      CSP csp = null;\n      MApplicationToApplication mApplicationToApplication = null;\n      BlipApplication application = null;\n      PerformRuleResult ruleresult = null;\n      Edge applicationNode__attribute__titleAttr = null;\n      Edge applicationNode__attribute__androidMapsApiKeyAttr = null;\n      Edge mApplicationToApplication__target__application = null;\n      Edge applicationNode__attribute__androidPlayLibraryPathAttr = null;\n      Edge applicationNode__attribute__packageNameAttr = null;\n      Edge mApplicationToApplication__source__applicationNode = null;\n\n      // story node \'perform transformation\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (isApplicableMatch.getObject(\"androidMapsApiKeyAttr\"));\n\n         // ensure correct type and really bound of object androidMapsApiKeyAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         androidMapsApiKeyAttr = (Attribute) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"androidPlayLibraryPathAttr\"));\n\n         // ensure correct type and really bound of object androidPlayLibraryPathAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         androidPlayLibraryPathAttr = (Attribute) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"applicationNode\"));\n\n         // ensure correct type and really bound of object applicationNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         applicationNode = (Node) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"packageNameAttr\"));\n\n         // ensure correct type and really bound of object packageNameAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         packageNameAttr = (Attribute) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"titleAttr\"));\n\n         // ensure correct type and really bound of object titleAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         titleAttr = (Attribute) _TmpObject;\n         // check object isApplicableMatch is really bound\n         JavaSDM.ensure ( isApplicableMatch != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // iterate to-many link attributeInfo from isApplicableMatch to csp\n         fujaba__Success = false;\n\n         fujaba__IterIsApplicableMatchToCsp = isApplicableMatch.getAttributeInfo().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterIsApplicableMatchToCsp.hasNext () )\n         {\n            try\n            {\n               _TmpObject =  fujaba__IterIsApplicableMatchToCsp.next ();\n\n               // ensure correct type and really bound of object csp\n               JavaSDM.ensure ( _TmpObject instanceof CSP );\n               csp = (CSP) _TmpObject;\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         if (!fujaba__Success)\n         {\n            fujaba__Success = true;\n            csp = null;\n         }\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n         // create object mApplicationToApplication\n         mApplicationToApplication = BlipTGGFactory.eINSTANCE.createMApplicationToApplication();\n\n         // create object application\n         application = BlipLanguageFactory.eINSTANCE.createBlipApplication();\n\n         // assign attribute application\n         application.setTitle ((java.lang.String)csp.getAttributeVariable(\"application\",\"title\").getValue());\n         // assign attribute application\n         application.setPackageName ((java.lang.String)csp.getAttributeVariable(\"application\",\"packageName\").getValue());\n         // assign attribute application\n         application.setAndroidPlayLibraryPath ((java.lang.String)csp.getAttributeVariable(\"application\",\"androidPlayLibraryPath\").getValue());\n         // assign attribute application\n         application.setAndroidMapsApiKey ((java.lang.String)csp.getAttributeVariable(\"application\",\"androidMapsApiKey\").getValue());\n\n         // create link\n         mApplicationToApplication.setSource( applicationNode);\n\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(mApplicationToApplication,application,\"target\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'collect translated elements\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object mApplicationToApplication is really bound\n         JavaSDM.ensure ( mApplicationToApplication != null );\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createPerformRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,androidPlayLibraryPathAttr,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,androidMapsApiKeyAttr,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,titleAttr,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,packageNameAttr,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication,\"createdLinkElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,application,\"createdElements\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'bookkeeping for edges\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object mApplicationToApplication is really bound\n         JavaSDM.ensure ( mApplicationToApplication != null );\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects application and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !application.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects applicationNode and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !applicationNode.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects mApplicationToApplication and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !mApplicationToApplication.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects application and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !application.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects applicationNode and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !applicationNode.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects mApplicationToApplication and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !mApplicationToApplication.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects applicationNode and application \n         JavaSDM.ensure ( !applicationNode.equals (application) );\n\n         // check isomorphic binding between objects mApplicationToApplication and application \n         JavaSDM.ensure ( !mApplicationToApplication.equals (application) );\n\n         // check isomorphic binding between objects packageNameAttr and application \n         JavaSDM.ensure ( !packageNameAttr.equals (application) );\n\n         // check isomorphic binding between objects titleAttr and application \n         JavaSDM.ensure ( !titleAttr.equals (application) );\n\n         // check isomorphic binding between objects mApplicationToApplication and applicationNode \n         JavaSDM.ensure ( !mApplicationToApplication.equals (applicationNode) );\n\n         // check isomorphic binding between objects packageNameAttr and applicationNode \n         JavaSDM.ensure ( !packageNameAttr.equals (applicationNode) );\n\n         // check isomorphic binding between objects titleAttr and applicationNode \n         JavaSDM.ensure ( !titleAttr.equals (applicationNode) );\n\n         // check isomorphic binding between objects packageNameAttr and mApplicationToApplication \n         JavaSDM.ensure ( !packageNameAttr.equals (mApplicationToApplication) );\n\n         // check isomorphic binding between objects titleAttr and mApplicationToApplication \n         JavaSDM.ensure ( !titleAttr.equals (mApplicationToApplication) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // create object applicationNode__attribute__titleAttr\n         applicationNode__attribute__titleAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__androidMapsApiKeyAttr\n         applicationNode__attribute__androidMapsApiKeyAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object mApplicationToApplication__target__application\n         mApplicationToApplication__target__application = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__androidPlayLibraryPathAttr\n         applicationNode__attribute__androidPlayLibraryPathAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__packageNameAttr\n         applicationNode__attribute__packageNameAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object mApplicationToApplication__source__applicationNode\n         mApplicationToApplication__source__applicationNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // assign attribute applicationNode__attribute__titleAttr\n         applicationNode__attribute__titleAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__packageNameAttr\n         applicationNode__attribute__packageNameAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__androidPlayLibraryPathAttr\n         applicationNode__attribute__androidPlayLibraryPathAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__androidMapsApiKeyAttr\n         applicationNode__attribute__androidMapsApiKeyAttr.setName (\"attribute\");\n         // assign attribute mApplicationToApplication__source__applicationNode\n         mApplicationToApplication__source__applicationNode.setName (\"source\");\n         // assign attribute mApplicationToApplication__target__application\n         mApplicationToApplication__target__application.setName (\"target\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__titleAttr,\"translatedEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__androidMapsApiKeyAttr,\"translatedEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication__target__application,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__androidPlayLibraryPathAttr,\"translatedEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__packageNameAttr,\"translatedEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication__source__applicationNode,\"createdEdges\");\n\n         // create link\n         applicationNode__attribute__androidMapsApiKeyAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__androidPlayLibraryPathAttr.setSrc( applicationNode);\n\n\n         // create link\n         mApplicationToApplication__source__applicationNode.setTrg( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__packageNameAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__titleAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__titleAttr.setTrg( titleAttr);\n\n\n         // create link\n         applicationNode__attribute__packageNameAttr.setTrg( packageNameAttr);\n\n\n         // create link\n         applicationNode__attribute__androidPlayLibraryPathAttr.setTrg( androidPlayLibraryPathAttr);\n\n\n         // create link\n         applicationNode__attribute__androidMapsApiKeyAttr.setTrg( androidMapsApiKeyAttr);\n\n\n         // create link\n         mApplicationToApplication__source__applicationNode.setSrc( mApplicationToApplication);\n\n\n         // create link\n         mApplicationToApplication__target__application.setSrc( mApplicationToApplication);\n\n\n         // create link\n         mApplicationToApplication__target__application.setTrg( application);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // statement node \'perform postprocessing\'\n      // No post processing method found\n      return ruleresult;'"
	 * @generated
	 */
	PerformRuleResult perform_FWD(IsApplicableMatch isApplicableMatch);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Check CSP\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.5\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.2\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.3\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect elements to be translated\" outgoing=\"//@ownedActivityEdge.0\" incoming=\"//@ownedActivityEdge.5\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1 //@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.3 //@ownedActivityNode.3/@storyPattern/@linkVariable.4 //@ownedActivityNode.3/@storyPattern/@linkVariable.5 //@ownedActivityNode.3/@storyPattern/@linkVariable.8 //@ownedActivityNode.3/@storyPattern/@linkVariable.11 //@ownedActivityNode.3/@storyPattern/@linkVariable.14\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.6 //@ownedActivityNode.3/@storyPattern/@linkVariable.9 //@ownedActivityNode.3/@storyPattern/@linkVariable.12 //@ownedActivityNode.3/@storyPattern/@linkVariable.15\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1 //@ownedActivityNode.3/@storyPattern/@linkVariable.7\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.10\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.3 //@ownedActivityNode.3/@storyPattern/@linkVariable.13\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.4 //@ownedActivityNode.3/@storyPattern/@linkVariable.16\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__titleAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.5\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.6 //@ownedActivityNode.3/@storyPattern/@linkVariable.7\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__packageNameAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.8\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.9 //@ownedActivityNode.3/@storyPattern/@linkVariable.10\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.11\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.12 //@ownedActivityNode.3/@storyPattern/@linkVariable.13\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.14\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.15 //@ownedActivityNode.3/@storyPattern/@linkVariable.16\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.6\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.6\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.7\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.7\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.8\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.9\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.2\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect context elements\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.6\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"register objects to match\" outgoing=\"//@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.registerObject(&quot;applicationNode&quot;, applicationNode);&#xA;match.registerObject(&quot;titleAttr&quot;, titleAttr);&#xA;match.registerObject(&quot;packageNameAttr&quot;, packageNameAttr);&#xA;match.registerObject(&quot;androidPlayLibraryPathAttr&quot;, androidPlayLibraryPathAttr);&#xA;match.registerObject(&quot;androidMapsApiKeyAttr&quot;, androidMapsApiKeyAttr);&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.2\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.7\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.6\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Edge applicationNode__attribute__androidMapsApiKeyAttr = null;\n      Edge applicationNode__attribute__androidPlayLibraryPathAttr = null;\n      Edge applicationNode__attribute__titleAttr = null;\n      Edge applicationNode__attribute__packageNameAttr = null;\n\n      // statement node \'Solve CSP\'\n      // Create CSP\n      CSP csp = CspFactory.eINSTANCE.createCSP();\n\n      // Create literals\n\n      // Create attribute variables\n\n      // Create explicit parameters\n\n      // Create unbound variables\n\n      // Create constraints\n\n\n\n\n      // Solve CSP\n\n      // statement node \'Check CSP\'\n      fujaba__Success = csp.check();\n      if (fujaba__Success)\n      {\n         // story node \'collect elements to be translated\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object androidMapsApiKeyAttr is really bound\n            JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n            // check object androidPlayLibraryPathAttr is really bound\n            JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n            // check object applicationNode is really bound\n            JavaSDM.ensure ( applicationNode != null );\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            // check object packageNameAttr is really bound\n            JavaSDM.ensure ( packageNameAttr != null );\n            // check object titleAttr is really bound\n            JavaSDM.ensure ( titleAttr != null );\n            // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n            JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n            // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n            JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n            // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n            JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n            // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n            JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n            // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n            JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n            // check isomorphic binding between objects titleAttr and packageNameAttr \n            JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n            // create object applicationNode__attribute__androidMapsApiKeyAttr\n            applicationNode__attribute__androidMapsApiKeyAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // create object applicationNode__attribute__androidPlayLibraryPathAttr\n            applicationNode__attribute__androidPlayLibraryPathAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // create object applicationNode__attribute__titleAttr\n            applicationNode__attribute__titleAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // create object applicationNode__attribute__packageNameAttr\n            applicationNode__attribute__packageNameAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // assign attribute applicationNode__attribute__titleAttr\n            applicationNode__attribute__titleAttr.setName (\"attribute\");\n            // assign attribute applicationNode__attribute__packageNameAttr\n            applicationNode__attribute__packageNameAttr.setName (\"attribute\");\n            // assign attribute applicationNode__attribute__androidPlayLibraryPathAttr\n            applicationNode__attribute__androidPlayLibraryPathAttr.setName (\"attribute\");\n            // assign attribute applicationNode__attribute__androidMapsApiKeyAttr\n            applicationNode__attribute__androidMapsApiKeyAttr.setName (\"attribute\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,androidPlayLibraryPathAttr,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,androidMapsApiKeyAttr,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,applicationNode,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,applicationNode__attribute__androidMapsApiKeyAttr,\"toBeTranslatedEdges\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,applicationNode__attribute__androidPlayLibraryPathAttr,\"toBeTranslatedEdges\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,applicationNode__attribute__titleAttr,\"toBeTranslatedEdges\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,titleAttr,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,packageNameAttr,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,applicationNode__attribute__packageNameAttr,\"toBeTranslatedEdges\");\n\n            // create link\n            applicationNode__attribute__androidMapsApiKeyAttr.setSrc( applicationNode);\n\n\n            // create link\n            applicationNode__attribute__androidPlayLibraryPathAttr.setSrc( applicationNode);\n\n\n            // create link\n            applicationNode__attribute__packageNameAttr.setSrc( applicationNode);\n\n\n            // create link\n            applicationNode__attribute__titleAttr.setSrc( applicationNode);\n\n\n            // create link\n            applicationNode__attribute__titleAttr.setTrg( titleAttr);\n\n\n            // create link\n            applicationNode__attribute__packageNameAttr.setTrg( packageNameAttr);\n\n\n            // create link\n            applicationNode__attribute__androidPlayLibraryPathAttr.setTrg( androidPlayLibraryPathAttr);\n\n\n            // create link\n            applicationNode__attribute__androidMapsApiKeyAttr.setTrg( androidMapsApiKeyAttr);\n\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // story node \'collect context elements\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // statement node \'register objects to match\'\n         match.registerObject(\"applicationNode\", applicationNode);\n         match.registerObject(\"titleAttr\", titleAttr);\n         match.registerObject(\"packageNameAttr\", packageNameAttr);\n         match.registerObject(\"androidPlayLibraryPathAttr\", androidPlayLibraryPathAttr);\n         match.registerObject(\"androidMapsApiKeyAttr\", androidMapsApiKeyAttr);\n\n         return true;\n\n      }\n      else\n      {\n         return false;\n\n      }'"
	 * @generated
	 */
	boolean isAppropriate_FWD(Match match, Node applicationNode,
			Attribute titleAttr, Attribute packageNameAttr,
			Attribute androidPlayLibraryPathAttr,
			Attribute androidMapsApiKeyAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"core match\" outgoing=\"//@ownedActivityEdge.8\" incoming=\"//@ownedActivityEdge.2\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;applicationNode&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;titleAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;packageNameAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;androidPlayLibraryPathAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;androidMapsApiKeyAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.0 //@ownedActivityNode.0/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.2 //@ownedActivityNode.0/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.4 //@ownedActivityNode.0/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.6 //@ownedActivityNode.0/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/rule\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;MApplicationToApplicationRule&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;perform_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\"/>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.5\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"find context\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.0 //@ownedActivityEdge.3 //@ownedActivityEdge.8\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1 //@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.0 //@ownedActivityNode.3/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.2 //@ownedActivityNode.3/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.4 //@ownedActivityNode.3/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.6 //@ownedActivityNode.3/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"add match to rule result\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"isApplicableMatch\" incomingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"isApplicableMatch\" target=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"check CSP\" outgoing=\"//@ownedActivityEdge.0 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.7\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;isApplicableMatch.getAttributeInfo().add(csp);&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;Variable&lt;String> var_titleAttr_value = CspFactory.eINSTANCE.createVariable(&quot;titleAttr.value&quot;, true, csp);&#xD;&#xA;var_titleAttr_value.setValue(titleAttr.getValue());&#xD;&#xA;Variable&lt;String> var_packageNameAttr_value = CspFactory.eINSTANCE.createVariable(&quot;packageNameAttr.value&quot;, true, csp);&#xD;&#xA;var_packageNameAttr_value.setValue(packageNameAttr.getValue());&#xD;&#xA;Variable&lt;String> var_androidPlayLibraryPathAttr_value = CspFactory.eINSTANCE.createVariable(&quot;androidPlayLibraryPathAttr.value&quot;, true, csp);&#xD;&#xA;var_androidPlayLibraryPathAttr_value.setValue(androidPlayLibraryPathAttr.getValue());&#xD;&#xA;Variable&lt;String> var_androidMapsApiKeyAttr_value = CspFactory.eINSTANCE.createVariable(&quot;androidMapsApiKeyAttr.value&quot;, true, csp);&#xD;&#xA;var_androidMapsApiKeyAttr_value.setValue(androidMapsApiKeyAttr.getValue());&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;Variable&lt;String> var_application_title = CspFactory.eINSTANCE.createVariable(&quot;application.title&quot;, csp);&#xD;&#xA;Variable&lt;String> var_application_packageName = CspFactory.eINSTANCE.createVariable(&quot;application.packageName&quot;, csp);&#xD;&#xA;Variable&lt;String> var_application_androidPlayLibraryPath = CspFactory.eINSTANCE.createVariable(&quot;application.androidPlayLibraryPath&quot;, csp);&#xD;&#xA;Variable&lt;String> var_application_androidMapsApiKey = CspFactory.eINSTANCE.createVariable(&quot;application.androidMapsApiKey&quot;, csp);&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;Eq&lt;String> eq = new Eq&lt;String>();Eq&lt;String> eq_0 = new Eq&lt;String>();Eq&lt;String> eq_1 = new Eq&lt;String>();Eq&lt;String> eq_2 = new Eq&lt;String>();&#xD;&#xA;&#xD;&#xA;csp.getConstraints().add(eq);&#xD;&#xA;csp.getConstraints().add(eq_0);&#xD;&#xA;csp.getConstraints().add(eq_1);&#xD;&#xA;csp.getConstraints().add(eq_2);&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;eq.setRuleName(&quot;&quot;);&#xD;&#xA;eq.solve(var_titleAttr_value,var_application_title);&#xD;&#xA;eq_0.setRuleName(&quot;&quot;);&#xD;&#xA;eq_0.solve(var_packageNameAttr_value,var_application_packageName);&#xD;&#xA;eq_1.setRuleName(&quot;&quot;);&#xD;&#xA;eq_1.solve(var_androidPlayLibraryPathAttr_value,var_application_androidPlayLibraryPath);&#xD;&#xA;eq_2.setRuleName(&quot;&quot;);&#xD;&#xA;eq_2.solve(var_androidMapsApiKeyAttr_value,var_application_androidMapsApiKey);&#xD;&#xA;&#xD;&#xA;// Snapshot pattern match on which CSP is solved&#xD;&#xA;isApplicableMatch.registerObject(&quot;applicationNode&quot;,applicationNode);&#xD;&#xA;isApplicableMatch.registerObject(&quot;titleAttr&quot;,titleAttr);&#xD;&#xA;isApplicableMatch.registerObject(&quot;packageNameAttr&quot;,packageNameAttr);&#xD;&#xA;isApplicableMatch.registerObject(&quot;androidPlayLibraryPathAttr&quot;,androidPlayLibraryPathAttr);&#xD;&#xA;isApplicableMatch.registerObject(&quot;androidMapsApiKeyAttr&quot;,androidMapsApiKeyAttr);&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.4\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.3\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.6\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsApplicableRuleResult ruleresult = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Node applicationNode = null;\n      Attribute packageNameAttr = null;\n      Attribute titleAttr = null;\n      IsApplicableMatch isApplicableMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"perform_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsApplicableRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n         // assign attribute ruleresult\n         ruleresult.setRule (\"MApplicationToApplicationRule\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,performOperation,\"performOperation\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (match.getObject(\"androidMapsApiKeyAttr\"));\n\n         // ensure correct type and really bound of object androidMapsApiKeyAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         androidMapsApiKeyAttr = (Attribute) _TmpObject;\n         _TmpObject = (match.getObject(\"androidPlayLibraryPathAttr\"));\n\n         // ensure correct type and really bound of object androidPlayLibraryPathAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         androidPlayLibraryPathAttr = (Attribute) _TmpObject;\n         _TmpObject = (match.getObject(\"applicationNode\"));\n\n         // ensure correct type and really bound of object applicationNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         applicationNode = (Node) _TmpObject;\n         _TmpObject = (match.getObject(\"packageNameAttr\"));\n\n         // ensure correct type and really bound of object packageNameAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         packageNameAttr = (Attribute) _TmpObject;\n         _TmpObject = (match.getObject(\"titleAttr\"));\n\n         // ensure correct type and really bound of object titleAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         titleAttr = (Attribute) _TmpObject;\n         // check object match is really bound\n         JavaSDM.ensure ( match != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'find context\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // check link attribute from androidMapsApiKeyAttr to applicationNode\n         JavaSDM.ensure (applicationNode.equals (androidMapsApiKeyAttr.getNode ()\n         ));\n\n         // check link attribute from androidPlayLibraryPathAttr to applicationNode\n         JavaSDM.ensure (applicationNode.equals (androidPlayLibraryPathAttr.getNode ()\n         ));\n\n         // check link attribute from packageNameAttr to applicationNode\n         JavaSDM.ensure (applicationNode.equals (packageNameAttr.getNode ()\n         ));\n\n         // check link attribute from titleAttr to applicationNode\n         JavaSDM.ensure (applicationNode.equals (titleAttr.getNode ()\n         ));\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n         // create object isApplicableMatch\n         isApplicableMatch = TGGRuntimeFactory.eINSTANCE.createIsApplicableMatch();\n\n         // statement node \'solve CSP\'\n         // Create CSP\n         CSP csp = CspFactory.eINSTANCE.createCSP();\n         isApplicableMatch.getAttributeInfo().add(csp);\n\n         // Create literals\n\n         // Create attribute variables\n         Variable<String> var_titleAttr_value = CspFactory.eINSTANCE.createVariable(\"titleAttr.value\", true, csp);\n         var_titleAttr_value.setValue(titleAttr.getValue());\n         Variable<String> var_packageNameAttr_value = CspFactory.eINSTANCE.createVariable(\"packageNameAttr.value\", true, csp);\n         var_packageNameAttr_value.setValue(packageNameAttr.getValue());\n         Variable<String> var_androidPlayLibraryPathAttr_value = CspFactory.eINSTANCE.createVariable(\"androidPlayLibraryPathAttr.value\", true, csp);\n         var_androidPlayLibraryPathAttr_value.setValue(androidPlayLibraryPathAttr.getValue());\n         Variable<String> var_androidMapsApiKeyAttr_value = CspFactory.eINSTANCE.createVariable(\"androidMapsApiKeyAttr.value\", true, csp);\n         var_androidMapsApiKeyAttr_value.setValue(androidMapsApiKeyAttr.getValue());\n\n         // Create explicit parameters\n\n         // Create unbound variables\n         Variable<String> var_application_title = CspFactory.eINSTANCE.createVariable(\"application.title\", csp);\n         Variable<String> var_application_packageName = CspFactory.eINSTANCE.createVariable(\"application.packageName\", csp);\n         Variable<String> var_application_androidPlayLibraryPath = CspFactory.eINSTANCE.createVariable(\"application.androidPlayLibraryPath\", csp);\n         Variable<String> var_application_androidMapsApiKey = CspFactory.eINSTANCE.createVariable(\"application.androidMapsApiKey\", csp);\n\n         // Create constraints\n         Eq<String> eq = new Eq<String>();Eq<String> eq_0 = new Eq<String>();Eq<String> eq_1 = new Eq<String>();Eq<String> eq_2 = new Eq<String>();\n\n         csp.getConstraints().add(eq);\n         csp.getConstraints().add(eq_0);\n         csp.getConstraints().add(eq_1);\n         csp.getConstraints().add(eq_2);\n\n         // Solve CSP\n         eq.setRuleName(\"\");\n         eq.solve(var_titleAttr_value,var_application_title);\n         eq_0.setRuleName(\"\");\n         eq_0.solve(var_packageNameAttr_value,var_application_packageName);\n         eq_1.setRuleName(\"\");\n         eq_1.solve(var_androidPlayLibraryPathAttr_value,var_application_androidPlayLibraryPath);\n         eq_2.setRuleName(\"\");\n         eq_2.solve(var_androidMapsApiKeyAttr_value,var_application_androidMapsApiKey);\n\n         // Snapshot pattern match on which CSP is solved\n         isApplicableMatch.registerObject(\"applicationNode\",applicationNode);\n         isApplicableMatch.registerObject(\"titleAttr\",titleAttr);\n         isApplicableMatch.registerObject(\"packageNameAttr\",packageNameAttr);\n         isApplicableMatch.registerObject(\"androidPlayLibraryPathAttr\",androidPlayLibraryPathAttr);\n         isApplicableMatch.registerObject(\"androidMapsApiKeyAttr\",androidMapsApiKeyAttr);\n\n         // statement node \'check CSP\'\n         fujaba__Success = csp.check();\n         if (fujaba__Success)\n         {\n            // story node \'add match to rule result\'\n            try \n            {\n               fujaba__Success = false; \n\n               // check object isApplicableMatch is really bound\n               JavaSDM.ensure ( isApplicableMatch != null );\n               // check object ruleresult is really bound\n               JavaSDM.ensure ( ruleresult != null );\n               // assign attribute ruleresult\n               ruleresult.setSuccess (true);\n\n               // create link\n               ruleresult.getIsApplicableMatch().add(isApplicableMatch);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n\n\n         }\n         else\n         {\n\n         }\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsApplicableRuleResult isApplicable_FWD(Match match);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect translated elements\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.1\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0 //@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.2 //@ownedActivityNode.0/@storyPattern/@linkVariable.3 //@ownedActivityNode.0/@storyPattern/@linkVariable.4 //@ownedActivityNode.0/@storyPattern/@linkVariable.5 //@ownedActivityNode.0/@storyPattern/@linkVariable.6\" bindingOperator=\"CREATE\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.5\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MApplicationToApplication\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"application\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdLinkElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"perform transformation\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.4\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute/value\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;titleAttr&quot;,&quot;value&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute/value\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;packageNameAttr&quot;,&quot;value&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute/value\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;androidPlayLibraryPathAttr&quot;,&quot;value&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute/value\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;androidMapsApiKeyAttr&quot;,&quot;value&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mApplicationToApplication\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.4 //@ownedActivityNode.1/@storyPattern/@linkVariable.5\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MApplicationToApplication\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"application\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.5\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;application&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"csp\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.6\" bindingSemantics=\"OPTIONAL\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGLanguage#//csp/CSP\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;this&quot;)\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable name=\"attributeInfo\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.9\"/>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED00057400166170706C69636174696F6E2E6765745469746C652829\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001C6170706C69636174696F6E2E6765745061636B6167654E616D652829\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED00057400276170706C69636174696F6E2E676574416E64726F6964506C61794C696272617279506174682829\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED00057400226170706C69636174696F6E2E676574416E64726F69644D6170734170694B65792829\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n        <forward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <simultaneous variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <backward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3 //@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5 //@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.2 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.3\"/>\r\n        <source/>\r\n        <target/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"perform postprocessing\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// No post processing method found\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"bookkeeping for edges\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1 //@ownedActivityNode.5/@storyPattern/@linkVariable.4 //@ownedActivityNode.5/@storyPattern/@linkVariable.7 //@ownedActivityNode.5/@storyPattern/@linkVariable.10 //@ownedActivityNode.5/@storyPattern/@linkVariable.13 //@ownedActivityNode.5/@storyPattern/@linkVariable.16\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.8 //@ownedActivityNode.5/@storyPattern/@linkVariable.11 //@ownedActivityNode.5/@storyPattern/@linkVariable.12\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.14 //@ownedActivityNode.5/@storyPattern/@linkVariable.17\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"application\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.15\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__titleAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0 //@ownedActivityNode.5/@storyPattern/@linkVariable.2\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__packageNameAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.4\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3 //@ownedActivityNode.5/@storyPattern/@linkVariable.5\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.7\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.6 //@ownedActivityNode.5/@storyPattern/@linkVariable.8\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"applicationNode__attribute__androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.10\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.11\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication__source__applicationNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.13\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.12 //@ownedActivityNode.5/@storyPattern/@linkVariable.14\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;source&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"mApplicationToApplication__target__application\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.16\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.15 //@ownedActivityNode.5/@storyPattern/@linkVariable.17\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;target&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.13\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.2\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      BlipApplication application = null;\n      Iterator fujaba__IterIsApplicableMatchToCsp = null;\n      CSP csp = null;\n      Node applicationNode = null;\n      Attribute packageNameAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Attribute titleAttr = null;\n      Attribute androidMapsApiKeyAttr = null;\n      MApplicationToApplication mApplicationToApplication = null;\n      PerformRuleResult ruleresult = null;\n      Edge applicationNode__attribute__packageNameAttr = null;\n      Edge applicationNode__attribute__androidPlayLibraryPathAttr = null;\n      Edge applicationNode__attribute__androidMapsApiKeyAttr = null;\n      Edge mApplicationToApplication__target__application = null;\n      Edge applicationNode__attribute__titleAttr = null;\n      Edge mApplicationToApplication__source__applicationNode = null;\n\n      // story node \'perform transformation\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (isApplicableMatch.getObject(\"application\"));\n\n         // ensure correct type and really bound of object application\n         JavaSDM.ensure ( _TmpObject instanceof BlipApplication );\n         application = (BlipApplication) _TmpObject;\n         // check object isApplicableMatch is really bound\n         JavaSDM.ensure ( isApplicableMatch != null );\n         // iterate to-many link attributeInfo from isApplicableMatch to csp\n         fujaba__Success = false;\n\n         fujaba__IterIsApplicableMatchToCsp = isApplicableMatch.getAttributeInfo().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterIsApplicableMatchToCsp.hasNext () )\n         {\n            try\n            {\n               _TmpObject =  fujaba__IterIsApplicableMatchToCsp.next ();\n\n               // ensure correct type and really bound of object csp\n               JavaSDM.ensure ( _TmpObject instanceof CSP );\n               csp = (CSP) _TmpObject;\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         if (!fujaba__Success)\n         {\n            fujaba__Success = true;\n            csp = null;\n         }\n         // create object applicationNode\n         applicationNode = MocaTreeFactory.eINSTANCE.createNode();\n\n         // create object packageNameAttr\n         packageNameAttr = MocaTreeFactory.eINSTANCE.createAttribute();\n\n         // create object androidPlayLibraryPathAttr\n         androidPlayLibraryPathAttr = MocaTreeFactory.eINSTANCE.createAttribute();\n\n         // create object titleAttr\n         titleAttr = MocaTreeFactory.eINSTANCE.createAttribute();\n\n         // create object androidMapsApiKeyAttr\n         androidMapsApiKeyAttr = MocaTreeFactory.eINSTANCE.createAttribute();\n\n         // create object mApplicationToApplication\n         mApplicationToApplication = BlipTGGFactory.eINSTANCE.createMApplicationToApplication();\n\n         // assign attribute applicationNode\n         applicationNode.setName (\"Application\");\n         // assign attribute titleAttr\n         titleAttr.setName (\"title\");\n         // assign attribute titleAttr\n         titleAttr.setValue ((java.lang.String)csp.getAttributeVariable(\"titleAttr\",\"value\").getValue());\n         // assign attribute packageNameAttr\n         packageNameAttr.setName (\"packageName\");\n         // assign attribute packageNameAttr\n         packageNameAttr.setValue ((java.lang.String)csp.getAttributeVariable(\"packageNameAttr\",\"value\").getValue());\n         // assign attribute androidPlayLibraryPathAttr\n         androidPlayLibraryPathAttr.setName (\"androidPlayLibraryPath\");\n         // assign attribute androidPlayLibraryPathAttr\n         androidPlayLibraryPathAttr.setValue ((java.lang.String)csp.getAttributeVariable(\"androidPlayLibraryPathAttr\",\"value\").getValue());\n         // assign attribute androidMapsApiKeyAttr\n         androidMapsApiKeyAttr.setName (\"androidMapsApiKey\");\n         // assign attribute androidMapsApiKeyAttr\n         androidMapsApiKeyAttr.setValue ((java.lang.String)csp.getAttributeVariable(\"androidMapsApiKeyAttr\",\"value\").getValue());\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(mApplicationToApplication,application,\"target\");\n\n         // create link\n         packageNameAttr.setNode( applicationNode);\n\n\n         // create link\n         androidPlayLibraryPathAttr.setNode( applicationNode);\n\n\n         // create link\n         titleAttr.setNode( applicationNode);\n\n\n         // create link\n         androidMapsApiKeyAttr.setNode( applicationNode);\n\n\n         // create link\n         mApplicationToApplication.setSource( applicationNode);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'collect translated elements\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object mApplicationToApplication is really bound\n         JavaSDM.ensure ( mApplicationToApplication != null );\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createPerformRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication,\"createdLinkElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode,\"createdElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,titleAttr,\"createdElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,androidMapsApiKeyAttr,\"createdElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,application,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,androidPlayLibraryPathAttr,\"createdElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,packageNameAttr,\"createdElements\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'bookkeeping for edges\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object mApplicationToApplication is really bound\n         JavaSDM.ensure ( mApplicationToApplication != null );\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects application and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !application.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects applicationNode and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !applicationNode.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects mApplicationToApplication and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !mApplicationToApplication.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n         // check isomorphic binding between objects application and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !application.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects applicationNode and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !applicationNode.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects mApplicationToApplication and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !mApplicationToApplication.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n         JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n         // check isomorphic binding between objects applicationNode and application \n         JavaSDM.ensure ( !applicationNode.equals (application) );\n\n         // check isomorphic binding between objects mApplicationToApplication and application \n         JavaSDM.ensure ( !mApplicationToApplication.equals (application) );\n\n         // check isomorphic binding between objects packageNameAttr and application \n         JavaSDM.ensure ( !packageNameAttr.equals (application) );\n\n         // check isomorphic binding between objects titleAttr and application \n         JavaSDM.ensure ( !titleAttr.equals (application) );\n\n         // check isomorphic binding between objects mApplicationToApplication and applicationNode \n         JavaSDM.ensure ( !mApplicationToApplication.equals (applicationNode) );\n\n         // check isomorphic binding between objects packageNameAttr and applicationNode \n         JavaSDM.ensure ( !packageNameAttr.equals (applicationNode) );\n\n         // check isomorphic binding between objects titleAttr and applicationNode \n         JavaSDM.ensure ( !titleAttr.equals (applicationNode) );\n\n         // check isomorphic binding between objects packageNameAttr and mApplicationToApplication \n         JavaSDM.ensure ( !packageNameAttr.equals (mApplicationToApplication) );\n\n         // check isomorphic binding between objects titleAttr and mApplicationToApplication \n         JavaSDM.ensure ( !titleAttr.equals (mApplicationToApplication) );\n\n         // check isomorphic binding between objects titleAttr and packageNameAttr \n         JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n         // create object applicationNode__attribute__packageNameAttr\n         applicationNode__attribute__packageNameAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__androidPlayLibraryPathAttr\n         applicationNode__attribute__androidPlayLibraryPathAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__androidMapsApiKeyAttr\n         applicationNode__attribute__androidMapsApiKeyAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object mApplicationToApplication__target__application\n         mApplicationToApplication__target__application = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object applicationNode__attribute__titleAttr\n         applicationNode__attribute__titleAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object mApplicationToApplication__source__applicationNode\n         mApplicationToApplication__source__applicationNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // assign attribute applicationNode__attribute__titleAttr\n         applicationNode__attribute__titleAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__packageNameAttr\n         applicationNode__attribute__packageNameAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__androidPlayLibraryPathAttr\n         applicationNode__attribute__androidPlayLibraryPathAttr.setName (\"attribute\");\n         // assign attribute applicationNode__attribute__androidMapsApiKeyAttr\n         applicationNode__attribute__androidMapsApiKeyAttr.setName (\"attribute\");\n         // assign attribute mApplicationToApplication__source__applicationNode\n         mApplicationToApplication__source__applicationNode.setName (\"source\");\n         // assign attribute mApplicationToApplication__target__application\n         mApplicationToApplication__target__application.setName (\"target\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__packageNameAttr,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__androidPlayLibraryPathAttr,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__androidMapsApiKeyAttr,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication__target__application,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,applicationNode__attribute__titleAttr,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,mApplicationToApplication__source__applicationNode,\"createdEdges\");\n\n         // create link\n         applicationNode__attribute__androidMapsApiKeyAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__packageNameAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__titleAttr.setSrc( applicationNode);\n\n\n         // create link\n         mApplicationToApplication__source__applicationNode.setTrg( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__androidPlayLibraryPathAttr.setSrc( applicationNode);\n\n\n         // create link\n         applicationNode__attribute__titleAttr.setTrg( titleAttr);\n\n\n         // create link\n         applicationNode__attribute__packageNameAttr.setTrg( packageNameAttr);\n\n\n         // create link\n         applicationNode__attribute__androidPlayLibraryPathAttr.setTrg( androidPlayLibraryPathAttr);\n\n\n         // create link\n         applicationNode__attribute__androidMapsApiKeyAttr.setTrg( androidMapsApiKeyAttr);\n\n\n         // create link\n         mApplicationToApplication__source__applicationNode.setSrc( mApplicationToApplication);\n\n\n         // create link\n         mApplicationToApplication__target__application.setSrc( mApplicationToApplication);\n\n\n         // create link\n         mApplicationToApplication__target__application.setTrg( application);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // statement node \'perform postprocessing\'\n      // No post processing method found\n      return ruleresult;'"
	 * @generated
	 */
	PerformRuleResult perform_BWD(IsApplicableMatch isApplicableMatch);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Check CSP\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.5\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.2\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.3\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect elements to be translated\" outgoing=\"//@ownedActivityEdge.0\" incoming=\"//@ownedActivityEdge.5\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"application\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.2\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect context elements\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.6\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"register objects to match\" outgoing=\"//@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.registerObject(&quot;application&quot;, application);&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.2\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.7\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.6\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n\n      // statement node \'Solve CSP\'\n      // Create CSP\n      CSP csp = CspFactory.eINSTANCE.createCSP();\n\n      // Create literals\n\n      // Create attribute variables\n\n      // Create explicit parameters\n\n      // Create unbound variables\n\n      // Create constraints\n\n\n\n\n      // Solve CSP\n\n      // statement node \'Check CSP\'\n      fujaba__Success = csp.check();\n      if (fujaba__Success)\n      {\n         // story node \'collect elements to be translated\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object application is really bound\n            JavaSDM.ensure ( application != null );\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,application,\"toBeTranslatedElements\");\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // story node \'collect context elements\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // statement node \'register objects to match\'\n         match.registerObject(\"application\", application);\n\n         return true;\n\n      }\n      else\n      {\n         return false;\n\n      }'"
	 * @generated
	 */
	boolean isAppropriate_BWD(Match match, BlipApplication application);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"core match\" outgoing=\"//@ownedActivityEdge.8\" incoming=\"//@ownedActivityEdge.2\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"application\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;application&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.0 //@ownedActivityNode.0/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.2 //@ownedActivityNode.0/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.4 //@ownedActivityNode.0/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.6 //@ownedActivityNode.0/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/rule\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;MApplicationToApplicationRule&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;perform_BWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\"/>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.5\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"find context\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.0 //@ownedActivityEdge.3 //@ownedActivityEdge.8\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"application\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.0 //@ownedActivityNode.3/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.2 //@ownedActivityNode.3/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.4 //@ownedActivityNode.3/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.6 //@ownedActivityNode.3/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"add match to rule result\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"isApplicableMatch\" incomingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"isApplicableMatch\" target=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"check CSP\" outgoing=\"//@ownedActivityEdge.0 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.7\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;isApplicableMatch.getAttributeInfo().add(csp);&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;Variable&lt;String> var_application_title = CspFactory.eINSTANCE.createVariable(&quot;application.title&quot;, true, csp);&#xD;&#xA;var_application_title.setValue(application.getTitle());&#xD;&#xA;Variable&lt;String> var_application_packageName = CspFactory.eINSTANCE.createVariable(&quot;application.packageName&quot;, true, csp);&#xD;&#xA;var_application_packageName.setValue(application.getPackageName());&#xD;&#xA;Variable&lt;String> var_application_androidPlayLibraryPath = CspFactory.eINSTANCE.createVariable(&quot;application.androidPlayLibraryPath&quot;, true, csp);&#xD;&#xA;var_application_androidPlayLibraryPath.setValue(application.getAndroidPlayLibraryPath());&#xD;&#xA;Variable&lt;String> var_application_androidMapsApiKey = CspFactory.eINSTANCE.createVariable(&quot;application.androidMapsApiKey&quot;, true, csp);&#xD;&#xA;var_application_androidMapsApiKey.setValue(application.getAndroidMapsApiKey());&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;Variable&lt;String> var_titleAttr_value = CspFactory.eINSTANCE.createVariable(&quot;titleAttr.value&quot;, csp);&#xD;&#xA;Variable&lt;String> var_packageNameAttr_value = CspFactory.eINSTANCE.createVariable(&quot;packageNameAttr.value&quot;, csp);&#xD;&#xA;Variable&lt;String> var_androidPlayLibraryPathAttr_value = CspFactory.eINSTANCE.createVariable(&quot;androidPlayLibraryPathAttr.value&quot;, csp);&#xD;&#xA;Variable&lt;String> var_androidMapsApiKeyAttr_value = CspFactory.eINSTANCE.createVariable(&quot;androidMapsApiKeyAttr.value&quot;, csp);&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;Eq&lt;String> eq = new Eq&lt;String>();Eq&lt;String> eq_0 = new Eq&lt;String>();Eq&lt;String> eq_1 = new Eq&lt;String>();Eq&lt;String> eq_2 = new Eq&lt;String>();&#xD;&#xA;&#xD;&#xA;csp.getConstraints().add(eq);&#xD;&#xA;csp.getConstraints().add(eq_0);&#xD;&#xA;csp.getConstraints().add(eq_1);&#xD;&#xA;csp.getConstraints().add(eq_2);&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;eq.setRuleName(&quot;&quot;);&#xD;&#xA;eq.solve(var_titleAttr_value,var_application_title);&#xD;&#xA;eq_0.setRuleName(&quot;&quot;);&#xD;&#xA;eq_0.solve(var_packageNameAttr_value,var_application_packageName);&#xD;&#xA;eq_1.setRuleName(&quot;&quot;);&#xD;&#xA;eq_1.solve(var_androidPlayLibraryPathAttr_value,var_application_androidPlayLibraryPath);&#xD;&#xA;eq_2.setRuleName(&quot;&quot;);&#xD;&#xA;eq_2.solve(var_androidMapsApiKeyAttr_value,var_application_androidMapsApiKey);&#xD;&#xA;&#xD;&#xA;// Snapshot pattern match on which CSP is solved&#xD;&#xA;isApplicableMatch.registerObject(&quot;application&quot;,application);&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.4\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.3\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.6\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsApplicableRuleResult ruleresult = null;\n      BlipApplication application = null;\n      IsApplicableMatch isApplicableMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"perform_BWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsApplicableRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n         // assign attribute ruleresult\n         ruleresult.setRule (\"MApplicationToApplicationRule\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,performOperation,\"performOperation\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (match.getObject(\"application\"));\n\n         // ensure correct type and really bound of object application\n         JavaSDM.ensure ( _TmpObject instanceof BlipApplication );\n         application = (BlipApplication) _TmpObject;\n         // check object match is really bound\n         JavaSDM.ensure ( match != null );\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'find context\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // create object isApplicableMatch\n         isApplicableMatch = TGGRuntimeFactory.eINSTANCE.createIsApplicableMatch();\n\n         // statement node \'solve CSP\'\n         // Create CSP\n         CSP csp = CspFactory.eINSTANCE.createCSP();\n         isApplicableMatch.getAttributeInfo().add(csp);\n\n         // Create literals\n\n         // Create attribute variables\n         Variable<String> var_application_title = CspFactory.eINSTANCE.createVariable(\"application.title\", true, csp);\n         var_application_title.setValue(application.getTitle());\n         Variable<String> var_application_packageName = CspFactory.eINSTANCE.createVariable(\"application.packageName\", true, csp);\n         var_application_packageName.setValue(application.getPackageName());\n         Variable<String> var_application_androidPlayLibraryPath = CspFactory.eINSTANCE.createVariable(\"application.androidPlayLibraryPath\", true, csp);\n         var_application_androidPlayLibraryPath.setValue(application.getAndroidPlayLibraryPath());\n         Variable<String> var_application_androidMapsApiKey = CspFactory.eINSTANCE.createVariable(\"application.androidMapsApiKey\", true, csp);\n         var_application_androidMapsApiKey.setValue(application.getAndroidMapsApiKey());\n\n         // Create explicit parameters\n\n         // Create unbound variables\n         Variable<String> var_titleAttr_value = CspFactory.eINSTANCE.createVariable(\"titleAttr.value\", csp);\n         Variable<String> var_packageNameAttr_value = CspFactory.eINSTANCE.createVariable(\"packageNameAttr.value\", csp);\n         Variable<String> var_androidPlayLibraryPathAttr_value = CspFactory.eINSTANCE.createVariable(\"androidPlayLibraryPathAttr.value\", csp);\n         Variable<String> var_androidMapsApiKeyAttr_value = CspFactory.eINSTANCE.createVariable(\"androidMapsApiKeyAttr.value\", csp);\n\n         // Create constraints\n         Eq<String> eq = new Eq<String>();Eq<String> eq_0 = new Eq<String>();Eq<String> eq_1 = new Eq<String>();Eq<String> eq_2 = new Eq<String>();\n\n         csp.getConstraints().add(eq);\n         csp.getConstraints().add(eq_0);\n         csp.getConstraints().add(eq_1);\n         csp.getConstraints().add(eq_2);\n\n         // Solve CSP\n         eq.setRuleName(\"\");\n         eq.solve(var_titleAttr_value,var_application_title);\n         eq_0.setRuleName(\"\");\n         eq_0.solve(var_packageNameAttr_value,var_application_packageName);\n         eq_1.setRuleName(\"\");\n         eq_1.solve(var_androidPlayLibraryPathAttr_value,var_application_androidPlayLibraryPath);\n         eq_2.setRuleName(\"\");\n         eq_2.solve(var_androidMapsApiKeyAttr_value,var_application_androidMapsApiKey);\n\n         // Snapshot pattern match on which CSP is solved\n         isApplicableMatch.registerObject(\"application\",application);\n\n         // statement node \'check CSP\'\n         fujaba__Success = csp.check();\n         if (fujaba__Success)\n         {\n            // story node \'add match to rule result\'\n            try \n            {\n               fujaba__Success = false; \n\n               // check object isApplicableMatch is really bound\n               JavaSDM.ensure ( isApplicableMatch != null );\n               // check object ruleresult is really bound\n               JavaSDM.ensure ( ruleresult != null );\n               // assign attribute ruleresult\n               ruleresult.setSuccess (true);\n\n               // create link\n               ruleresult.getIsApplicableMatch().add(isApplicableMatch);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n\n\n         }\n         else\n         {\n\n         }\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsApplicableRuleResult isApplicable_BWD(Match match);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"applicationNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/applicationNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"titleAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/titleAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"packageNameAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/packageNameAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidPlayLibraryPathAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidPlayLibraryPathAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidMapsApiKeyAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidMapsApiKeyAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterApplicationNodeToTitleAttr = null;\n      Attribute titleAttr = null;\n      Iterator fujaba__IterApplicationNodeToPackageNameAttr = null;\n      Attribute packageNameAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link attribute from applicationNode to androidMapsApiKeyAttr\n         fujaba__Success = false;\n\n         fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.hasNext () )\n         {\n            try\n            {\n               androidMapsApiKeyAttr = (Attribute) fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.next ();\n\n               // check object androidMapsApiKeyAttr is really bound\n               JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n               // iterate to-many link attribute from applicationNode to androidPlayLibraryPathAttr\n               fujaba__Success = false;\n\n               fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.hasNext () )\n               {\n                  try\n                  {\n                     androidPlayLibraryPathAttr = (Attribute) fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.next ();\n\n                     // check object androidPlayLibraryPathAttr is really bound\n                     JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n                     // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n                     JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n                     // iterate to-many link attribute from applicationNode to packageNameAttr\n                     fujaba__Success = false;\n\n                     fujaba__IterApplicationNodeToPackageNameAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                     while ( fujaba__IterApplicationNodeToPackageNameAttr.hasNext () )\n                     {\n                        try\n                        {\n                           packageNameAttr = (Attribute) fujaba__IterApplicationNodeToPackageNameAttr.next ();\n\n                           // check object packageNameAttr is really bound\n                           JavaSDM.ensure ( packageNameAttr != null );\n                           // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n                           JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n                           // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n                           JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n                           // iterate to-many link attribute from applicationNode to titleAttr\n                           fujaba__Success = false;\n\n                           fujaba__IterApplicationNodeToTitleAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                           while ( fujaba__IterApplicationNodeToTitleAttr.hasNext () )\n                           {\n                              try\n                              {\n                                 titleAttr = (Attribute) fujaba__IterApplicationNodeToTitleAttr.next ();\n\n                                 // check object titleAttr is really bound\n                                 JavaSDM.ensure ( titleAttr != null );\n                                 // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n                                 JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n                                 // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n                                 JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n                                 // check isomorphic binding between objects titleAttr and packageNameAttr \n                                 JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n                                 // attribute condition\n                                 JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n                                 // attribute condition\n                                 JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n                                 // attribute condition\n                                 JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n                                 // attribute condition\n                                 JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n                                 // attribute condition\n                                 JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n                                 // create object match\n                                 match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                                 // statement node \'bookkeeping with generic isAppropriate method\'\n                                 fujaba__Success = this.isAppropriate_FWD(match,applicationNode,titleAttr,packageNameAttr,androidPlayLibraryPathAttr,androidMapsApiKeyAttr);\n                                 if (fujaba__Success)\n                                 {\n                                    // story node \'Add match to rule result\'\n                                    try \n                                    {\n                                       fujaba__Success = false; \n\n                                       // check object match is really bound\n                                       JavaSDM.ensure ( match != null );\n                                       // check object ruleresult is really bound\n                                       JavaSDM.ensure ( ruleresult != null );\n\n                                       // create link\n                                       ruleresult.getMatches().add(match);\n\n                                       fujaba__Success = true;\n                                    }\n                                    catch ( JavaSDMException fujaba__InternalException )\n                                    {\n                                       fujaba__Success = false;\n                                    }\n\n\n                                 }\n                                 else\n                                 {\n\n                                 }\n\n                                 fujaba__Success = true;\n                              }\n                              catch ( JavaSDMException fujaba__InternalException )\n                              {\n                                 fujaba__Success = false;\n                              }\n                           }\n                           JavaSDM.ensure (fujaba__Success);\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n                     }\n                     JavaSDM.ensure (fujaba__Success);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Node_0(Node applicationNode);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"applicationNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/applicationNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"titleAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/titleAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"packageNameAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/packageNameAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidPlayLibraryPathAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidPlayLibraryPathAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidMapsApiKeyAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidMapsApiKeyAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterApplicationNodeToPackageNameAttr = null;\n      Attribute packageNameAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Node applicationNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object titleAttr is really bound\n         JavaSDM.ensure ( titleAttr != null );\n         // bind object\n         applicationNode = titleAttr.getNode ();\n\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n\n         // iterate to-many link attribute from applicationNode to androidMapsApiKeyAttr\n         fujaba__Success = false;\n\n         fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.hasNext () )\n         {\n            try\n            {\n               androidMapsApiKeyAttr = (Attribute) fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.next ();\n\n               // check object androidMapsApiKeyAttr is really bound\n               JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n               // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n               JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n               // iterate to-many link attribute from applicationNode to androidPlayLibraryPathAttr\n               fujaba__Success = false;\n\n               fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.hasNext () )\n               {\n                  try\n                  {\n                     androidPlayLibraryPathAttr = (Attribute) fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.next ();\n\n                     // check object androidPlayLibraryPathAttr is really bound\n                     JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n                     // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n                     JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n                     // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n                     JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n                     // iterate to-many link attribute from applicationNode to packageNameAttr\n                     fujaba__Success = false;\n\n                     fujaba__IterApplicationNodeToPackageNameAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                     while ( fujaba__IterApplicationNodeToPackageNameAttr.hasNext () )\n                     {\n                        try\n                        {\n                           packageNameAttr = (Attribute) fujaba__IterApplicationNodeToPackageNameAttr.next ();\n\n                           // check object packageNameAttr is really bound\n                           JavaSDM.ensure ( packageNameAttr != null );\n                           // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n                           JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n                           // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n                           JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n                           // check isomorphic binding between objects titleAttr and packageNameAttr \n                           JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n                           // create object match\n                           match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                           // statement node \'bookkeeping with generic isAppropriate method\'\n                           fujaba__Success = this.isAppropriate_FWD(match,applicationNode,titleAttr,packageNameAttr,androidPlayLibraryPathAttr,androidMapsApiKeyAttr);\n                           if (fujaba__Success)\n                           {\n                              // story node \'Add match to rule result\'\n                              try \n                              {\n                                 fujaba__Success = false; \n\n                                 // check object match is really bound\n                                 JavaSDM.ensure ( match != null );\n                                 // check object ruleresult is really bound\n                                 JavaSDM.ensure ( ruleresult != null );\n\n                                 // create link\n                                 ruleresult.getMatches().add(match);\n\n                                 fujaba__Success = true;\n                              }\n                              catch ( JavaSDMException fujaba__InternalException )\n                              {\n                                 fujaba__Success = false;\n                              }\n\n\n                           }\n                           else\n                           {\n\n                           }\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n                     }\n                     JavaSDM.ensure (fujaba__Success);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Attribute_0(Attribute titleAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"applicationNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/applicationNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"titleAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/titleAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"packageNameAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/packageNameAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidPlayLibraryPathAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidPlayLibraryPathAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidMapsApiKeyAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidMapsApiKeyAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterApplicationNodeToTitleAttr = null;\n      Attribute titleAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Node applicationNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object packageNameAttr is really bound\n         JavaSDM.ensure ( packageNameAttr != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // bind object\n         applicationNode = packageNameAttr.getNode ();\n\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n\n         // iterate to-many link attribute from applicationNode to androidMapsApiKeyAttr\n         fujaba__Success = false;\n\n         fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.hasNext () )\n         {\n            try\n            {\n               androidMapsApiKeyAttr = (Attribute) fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.next ();\n\n               // check object androidMapsApiKeyAttr is really bound\n               JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n               // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n               JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n               // iterate to-many link attribute from applicationNode to androidPlayLibraryPathAttr\n               fujaba__Success = false;\n\n               fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.hasNext () )\n               {\n                  try\n                  {\n                     androidPlayLibraryPathAttr = (Attribute) fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.next ();\n\n                     // check object androidPlayLibraryPathAttr is really bound\n                     JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n                     // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n                     JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n                     // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n                     JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n                     // iterate to-many link attribute from applicationNode to titleAttr\n                     fujaba__Success = false;\n\n                     fujaba__IterApplicationNodeToTitleAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                     while ( fujaba__IterApplicationNodeToTitleAttr.hasNext () )\n                     {\n                        try\n                        {\n                           titleAttr = (Attribute) fujaba__IterApplicationNodeToTitleAttr.next ();\n\n                           // check object titleAttr is really bound\n                           JavaSDM.ensure ( titleAttr != null );\n                           // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n                           // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n                           // check isomorphic binding between objects titleAttr and packageNameAttr \n                           JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n                           // create object match\n                           match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                           // statement node \'bookkeeping with generic isAppropriate method\'\n                           fujaba__Success = this.isAppropriate_FWD(match,applicationNode,titleAttr,packageNameAttr,androidPlayLibraryPathAttr,androidMapsApiKeyAttr);\n                           if (fujaba__Success)\n                           {\n                              // story node \'Add match to rule result\'\n                              try \n                              {\n                                 fujaba__Success = false; \n\n                                 // check object match is really bound\n                                 JavaSDM.ensure ( match != null );\n                                 // check object ruleresult is really bound\n                                 JavaSDM.ensure ( ruleresult != null );\n\n                                 // create link\n                                 ruleresult.getMatches().add(match);\n\n                                 fujaba__Success = true;\n                              }\n                              catch ( JavaSDMException fujaba__InternalException )\n                              {\n                                 fujaba__Success = false;\n                              }\n\n\n                           }\n                           else\n                           {\n\n                           }\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n                     }\n                     JavaSDM.ensure (fujaba__Success);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Attribute_1(
			Attribute packageNameAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"applicationNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/applicationNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"titleAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/titleAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"packageNameAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/packageNameAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidPlayLibraryPathAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidPlayLibraryPathAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidMapsApiKeyAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidMapsApiKeyAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterApplicationNodeToTitleAttr = null;\n      Attribute titleAttr = null;\n      Iterator fujaba__IterApplicationNodeToPackageNameAttr = null;\n      Attribute packageNameAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = null;\n      Attribute androidMapsApiKeyAttr = null;\n      Node applicationNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidPlayLibraryPathAttr is really bound\n         JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // bind object\n         applicationNode = androidPlayLibraryPathAttr.getNode ();\n\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n\n         // iterate to-many link attribute from applicationNode to androidMapsApiKeyAttr\n         fujaba__Success = false;\n\n         fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.hasNext () )\n         {\n            try\n            {\n               androidMapsApiKeyAttr = (Attribute) fujaba__IterApplicationNodeToAndroidMapsApiKeyAttr.next ();\n\n               // check object androidMapsApiKeyAttr is really bound\n               JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n               // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n               JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n               // iterate to-many link attribute from applicationNode to packageNameAttr\n               fujaba__Success = false;\n\n               fujaba__IterApplicationNodeToPackageNameAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterApplicationNodeToPackageNameAttr.hasNext () )\n               {\n                  try\n                  {\n                     packageNameAttr = (Attribute) fujaba__IterApplicationNodeToPackageNameAttr.next ();\n\n                     // check object packageNameAttr is really bound\n                     JavaSDM.ensure ( packageNameAttr != null );\n                     // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n                     JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n                     // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n                     JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n                     // iterate to-many link attribute from applicationNode to titleAttr\n                     fujaba__Success = false;\n\n                     fujaba__IterApplicationNodeToTitleAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                     while ( fujaba__IterApplicationNodeToTitleAttr.hasNext () )\n                     {\n                        try\n                        {\n                           titleAttr = (Attribute) fujaba__IterApplicationNodeToTitleAttr.next ();\n\n                           // check object titleAttr is really bound\n                           JavaSDM.ensure ( titleAttr != null );\n                           // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n                           // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n                           // check isomorphic binding between objects titleAttr and packageNameAttr \n                           JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n                           // create object match\n                           match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                           // statement node \'bookkeeping with generic isAppropriate method\'\n                           fujaba__Success = this.isAppropriate_FWD(match,applicationNode,titleAttr,packageNameAttr,androidPlayLibraryPathAttr,androidMapsApiKeyAttr);\n                           if (fujaba__Success)\n                           {\n                              // story node \'Add match to rule result\'\n                              try \n                              {\n                                 fujaba__Success = false; \n\n                                 // check object match is really bound\n                                 JavaSDM.ensure ( match != null );\n                                 // check object ruleresult is really bound\n                                 JavaSDM.ensure ( ruleresult != null );\n\n                                 // create link\n                                 ruleresult.getMatches().add(match);\n\n                                 fujaba__Success = true;\n                              }\n                              catch ( JavaSDMException fujaba__InternalException )\n                              {\n                                 fujaba__Success = false;\n                              }\n\n\n                           }\n                           else\n                           {\n\n                           }\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n                     }\n                     JavaSDM.ensure (fujaba__Success);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Attribute_2(
			Attribute androidPlayLibraryPathAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"applicationNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;Application&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"titleAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;title&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"packageNameAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;packageName&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidPlayLibraryPathAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidPlayLibraryPath&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"androidMapsApiKeyAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;androidMapsApiKey&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"applicationNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/applicationNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"titleAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/titleAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"packageNameAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/packageNameAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidPlayLibraryPathAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidPlayLibraryPathAttr\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"androidMapsApiKeyAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD/androidMapsApiKeyAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterApplicationNodeToTitleAttr = null;\n      Attribute titleAttr = null;\n      Iterator fujaba__IterApplicationNodeToPackageNameAttr = null;\n      Attribute packageNameAttr = null;\n      Iterator fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = null;\n      Attribute androidPlayLibraryPathAttr = null;\n      Node applicationNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object androidMapsApiKeyAttr is really bound\n         JavaSDM.ensure ( androidMapsApiKeyAttr != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // bind object\n         applicationNode = androidMapsApiKeyAttr.getNode ();\n\n         // check object applicationNode is really bound\n         JavaSDM.ensure ( applicationNode != null );\n\n         // iterate to-many link attribute from applicationNode to androidPlayLibraryPathAttr\n         fujaba__Success = false;\n\n         fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.hasNext () )\n         {\n            try\n            {\n               androidPlayLibraryPathAttr = (Attribute) fujaba__IterApplicationNodeToAndroidPlayLibraryPathAttr.next ();\n\n               // check object androidPlayLibraryPathAttr is really bound\n               JavaSDM.ensure ( androidPlayLibraryPathAttr != null );\n               // check isomorphic binding between objects androidPlayLibraryPathAttr and androidMapsApiKeyAttr \n               JavaSDM.ensure ( !androidPlayLibraryPathAttr.equals (androidMapsApiKeyAttr) );\n\n               // iterate to-many link attribute from applicationNode to packageNameAttr\n               fujaba__Success = false;\n\n               fujaba__IterApplicationNodeToPackageNameAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterApplicationNodeToPackageNameAttr.hasNext () )\n               {\n                  try\n                  {\n                     packageNameAttr = (Attribute) fujaba__IterApplicationNodeToPackageNameAttr.next ();\n\n                     // check object packageNameAttr is really bound\n                     JavaSDM.ensure ( packageNameAttr != null );\n                     // check isomorphic binding between objects packageNameAttr and androidMapsApiKeyAttr \n                     JavaSDM.ensure ( !packageNameAttr.equals (androidMapsApiKeyAttr) );\n\n                     // check isomorphic binding between objects packageNameAttr and androidPlayLibraryPathAttr \n                     JavaSDM.ensure ( !packageNameAttr.equals (androidPlayLibraryPathAttr) );\n\n                     // iterate to-many link attribute from applicationNode to titleAttr\n                     fujaba__Success = false;\n\n                     fujaba__IterApplicationNodeToTitleAttr = new ArrayList(applicationNode.getAttribute()).iterator ();\n\n                     while ( fujaba__IterApplicationNodeToTitleAttr.hasNext () )\n                     {\n                        try\n                        {\n                           titleAttr = (Attribute) fujaba__IterApplicationNodeToTitleAttr.next ();\n\n                           // check object titleAttr is really bound\n                           JavaSDM.ensure ( titleAttr != null );\n                           // check isomorphic binding between objects titleAttr and androidMapsApiKeyAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidMapsApiKeyAttr) );\n\n                           // check isomorphic binding between objects titleAttr and androidPlayLibraryPathAttr \n                           JavaSDM.ensure ( !titleAttr.equals (androidPlayLibraryPathAttr) );\n\n                           // check isomorphic binding between objects titleAttr and packageNameAttr \n                           JavaSDM.ensure ( !titleAttr.equals (packageNameAttr) );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (applicationNode.getName (), \"Application\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidMapsApiKeyAttr.getName (), \"androidMapsApiKey\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (androidPlayLibraryPathAttr.getName (), \"androidPlayLibraryPath\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (packageNameAttr.getName (), \"packageName\") == 0 );\n\n                           // attribute condition\n                           JavaSDM.ensure ( JavaSDM.stringCompare (titleAttr.getName (), \"title\") == 0 );\n\n                           // create object match\n                           match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                           // statement node \'bookkeeping with generic isAppropriate method\'\n                           fujaba__Success = this.isAppropriate_FWD(match,applicationNode,titleAttr,packageNameAttr,androidPlayLibraryPathAttr,androidMapsApiKeyAttr);\n                           if (fujaba__Success)\n                           {\n                              // story node \'Add match to rule result\'\n                              try \n                              {\n                                 fujaba__Success = false; \n\n                                 // check object match is really bound\n                                 JavaSDM.ensure ( match != null );\n                                 // check object ruleresult is really bound\n                                 JavaSDM.ensure ( ruleresult != null );\n\n                                 // create link\n                                 ruleresult.getMatches().add(match);\n\n                                 fujaba__Success = true;\n                              }\n                              catch ( JavaSDMException fujaba__InternalException )\n                              {\n                                 fujaba__Success = false;\n                              }\n\n\n                           }\n                           else\n                           {\n\n                           }\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n                     }\n                     JavaSDM.ensure (fujaba__Success);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Attribute_3(
			Attribute androidMapsApiKeyAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_BWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MApplicationToApplicationRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(titleAttr.value, application.title)&#xD;&#xA;&#x9;&#x9;eq(packageNameAttr.value, application.packageName)&#xD;&#xA;&#x9;&#x9;eq(androidPlayLibraryPathAttr.value, application.androidPlayLibraryPath)&#xD;&#xA;&#x9;&#x9;eq(androidMapsApiKeyAttr.value, application.androidMapsApiKey)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"application\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipApplication\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.4 //@ownedActivityNode.1/@storyPattern/@csp/@variables.5\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.6 //@ownedActivityNode.1/@storyPattern/@csp/@variables.7\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"titleAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"title\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"packageNameAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"packageName\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidPlayLibraryPathAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidPlayLibraryPath\" objectVariable=\"application\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"androidMapsApiKeyAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"androidMapsApiKey\" objectVariable=\"application\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_BWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"application\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_BWD/application\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MApplicationToApplicationRule/isAppropriate_BWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_BWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object application is really bound\n         JavaSDM.ensure ( application != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // create object match\n         match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n         // statement node \'bookkeeping with generic isAppropriate method\'\n         fujaba__Success = this.isAppropriate_BWD(match,application);\n         if (fujaba__Success)\n         {\n            // story node \'Add match to rule result\'\n            try \n            {\n               fujaba__Success = false; \n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n               // check object ruleresult is really bound\n               JavaSDM.ensure ( ruleresult != null );\n\n               // create link\n               ruleresult.getMatches().add(match);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n\n\n         }\n         else\n         {\n\n         }\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_BWD_BlipApplication_0(
			BlipApplication application);

} // MApplicationToApplicationRule
